let sleep = (time) =>
    new Promise((resolve) => {
        setTimeout(resolve, time)
    })

async function changeColor(color, duration) {
    console.log('traffic-light ', color);
    await sleep(duration);
}

async function main() {
    while (true) {
        await changeColor('red', 2000);
        await changeColor('yellow', 1000);
        await changeColor('green', 3000);
    }
}
main();